Because of foreign keys, order matters:

-- 1️⃣ Clear multiple-choice & grid items
DELETE FROM answer_items;

-- 2️⃣ Clear answers
DELETE FROM answers;

-- 3️⃣ Clear submissions
DELETE FROM submissions;

🚨 IMPORTANT ORDER (VERY IMPORTANT)

Because of foreign keys, order matters:

-- 1️⃣ Clear multiple-choice & grid items
DELETE FROM answer_items;

-- 2️⃣ Clear answers
DELETE FROM answers;

-- 3️⃣ Clear submissions
DELETE FROM submissions;


✔ Keeps:

questionnaires

sections

questions

question_options

grid_rows

🔄 OPTIONAL: Reset AUTO_INCREMENT IDs

If you want fresh IDs starting from 1:

ALTER TABLE answer_items AUTO_INCREMENT = 1;
ALTER TABLE answers AUTO_INCREMENT = 1;
ALTER TABLE submissions AUTO_INCREMENT = 1;


AST RESET (TRUNCATE – Recommended for dev)

If foreign keys allow it, this is faster:

SET FOREIGN_KEY_CHECKS = 0;

TRUNCATE TABLE answer_items;
TRUNCATE TABLE answers;
TRUNCATE TABLE submissions;

SET FOREIGN_KEY_CHECKS = 1;

Verify Clean State
SELECT COUNT(*) FROM submissions;
SELECT COUNT(*) FROM answers;
SELECT COUNT(*) FROM answer_items;


Option 1: Manual safe delete (recommended for admin tools)

Delete children first, then parent.

Step 1: delete options
DELETE FROM question_options WHERE question_id = 2;

Step 2: delete answers (VERY IMPORTANT)
DELETE FROM answer_items
WHERE answer_id IN (
  SELECT id FROM answers WHERE question_id = 2
);

DELETE FROM answers WHERE question_id = 2;

Step 3: delete the question
DELETE FROM questions WHERE id = 2;